package org.zjx.log;

import java.util.HashSet;
import java.util.Set;

/**
 * LogFilter用于过滤日志，基于日志级别和模块名称。
 */
public class LogFilter {
    private LogLevel minLevel;
    private Set<String> enabledModules;

    public LogFilter(LogLevel minLevel) {
        this.minLevel = minLevel;
        this.enabledModules = new HashSet<>();
    }

    /**
     * 向过滤器中添加一个启用的模块。
     *
     * @param moduleName 模块名称
     */
    public void addEnabledModule(String moduleName) {
        enabledModules.add(moduleName);
    }

    /**
     * 判断是否应该记录日志。
     *
     * @param level 日志级别
     * @param moduleName 模块名称
     * @return 如果日志符合条件，返回true，否则返回false
     */
    public boolean shouldLog(LogLevel level, String moduleName) {
        return level.ordinal() >= minLevel.ordinal() && (enabledModules.isEmpty() || enabledModules.contains(moduleName));
    }
}

